﻿
using HelloWPF.Command.Notify;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;


namespace HelloWPF.Command.Models
{
    // 模型
    // 底层接口：规定一个类的行为
    // BindableBase   通知    SetProperty<T>(ref field,value);
    //[AddINotifyPropertyChangedInterface]
    public class MainModel : NotifyBase
    {
        private double _value1 = 1;
        public double Value1
        {
            get => _value1;
            set
            {
                _value1 = value;
                //每当属性值变化的时候，进行通知
                DoNotify();
                //每当属性值变化的时候，进行命令条件检查（常用做法）
                //BtnHelloCommand.RaiseCanExecuteChanged

                //触发的命令检查通知（这句话可以不用加，有个线程不断的会进入CanExecute）
                //CommandManager.InvalidateRequerySuggested();
            }
        }
        public bool IsEnable { get; set; }

        public double Value2 { get; set; }

        public double Value3 { get; set; }

       

        //private double value3;

        //public double Value3
        //{
        //    get => value3;
        //    set
        //    {
        //        // MvvmLight   MvvmToolkit    Prism    Set    SetProperty
        //        if (value3 == value)
        //            return;
        //        value3 = value;
        //        // 发布
        //        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value3"));
        //    }
        //}
    }
}
